<< Índice

2. Optimización de las funciones en dos y tres dimensiones usando el método de descenso por gradiente con condición inicial aleatoria¶

A continuación vamos a optimizar las funciones utilizando el método de descenso por gradiente. En inglés conocido como method of steepest descent.

Vamos a explorar cómo se llega a la fórmula iterativa de descenso por gradiente:

$X^{n+1}= X^{n}-\epsilon \nabla f(X^{n}) \;$ (2.1)

Cuando tenemos una función en varias variables, nos encontramos con que en un punto dado de la función, tenemos infinitas direcciones dónde medir la tasa de cambio, es decir, la derivada de la fución en cierta dirección. Generalemnte, nos interesa una dirección en específico, y para eso existe lo que se conoce como derivada direecional; por ejemplo, en una función de dos variables, está definida por:

$D_{u}f(x,y) = U.\nabla f(x,y) \;$ (2.2)

Donde $U$ es el vector unitario en la dirección deseada y $\nabla f(x,y)$ es el vector llamado gradiente, que en cada una de sus entradas contiene la derivada de la función $f$ con respecto a su i-ésima componente.

Si minimizamos la función de (2.2), es decir,

$Min \; U.\nabla f(x,y) \;$ (2.3)

Vemos que, aprovechando la siguiente propiedad geométrica: $A.B = \left \|A\right \|\left \| B \right \|\cos\theta \;$ (2.4) Siendo $\theta$ el ángulo entre los vectores A y B, entonces:

$U.\nabla f(x,y) = \left \| U \right \|\left \| \nabla f(x,y) \right \|\cos \theta =\left \| \nabla f(x,y) \right \|\cos \theta \;$ (2.5)

y así, el valor mínimo de (2.5) es cuando $\cos \theta = -1$ , es decir $\theta = \pi$, es decir, cuando $U$ está en dirección opuesta al $\nabla f(x,y)$.

En resúmen, tenemos un resultado interesantísimo: !El grado de mayor inclinación descendente del gradiente es justmanete la dirección opuesta al vector gradiente!

La anterior demostración fue parafraseada del cálculo de Leithold (1996, p. 979)

De esta forma, podemos ir descendiendo de forma iterativa, en dirección opuesta al gradiente, como se muestra en (2.1), con pasos de tamaño $\epsilon $. A esta constante se le conoce como taza de aprendizaje y se puede escoger de diferentes maneras de forma estratégica. El descenso por gradiente converge cuando cada elemento del gradiente es cero o en la práctica, muy cercano a cero, así lo aclara Goodfellow et al. en su libro introductorio, Deep Learning (2016, p. 84).

Descenso por gradiente en dos dimensiones¶

Ahora utilizamos un método numérico de descenso por gradiente para la función de Rosenbrock en dos dimensiones, definida por: $f(x_{1},x_{2}) = (1-x_{1})^2 +100(x_{2}-x_{1}^2)^2$, haciendo uso de $X^{n+1}= X^{n}-\epsilon \nabla f(X^{n})$

Veamos que al invocar la función con parámetros extremos, como máximo de iteraciones igual a 10 millones y un error de 10-e9, alcanzamos una solución muy cercana a la teórica, que está ubicada en (1,1).

Número de iteraciones:10000
Tolerancia soportada:1e-05
Tasa de aprendizaje (paso):0.001
Punto inicial aleatorio:[0.47625534281245696, -1.779770806241691]
Solución alcanzada: [0.99438886 0.98878667]
Número de soluciones obtenidas: 10002
Your browser does not support the video tag.

Segunda corrida aleatoria:

Número de iteraciones:10000
Tolerancia soportada:1e-05
Tasa de aprendizaje (paso):0.001
Punto inicial aleatorio:[-0.6936733519220166, -0.9868736985694893]
Solución alcanzada: [0.99432468 0.98865879]
Número de soluciones obtenidas: 10002
Your browser does not support the video tag.
Número de iteraciones:10000
Tolerancia soportada:1e-05
Tasa de aprendizaje (paso):0.001
Punto inicial aleatorio:[-0.9163811005080731, -0.4517645038533027, -0.6647706627498147]
Solución alcanzada: [0.99999866 0.99999731 0.99999458]
Número de soluciones obtenidas: 8370

Graficamos con respecto a X1 y X3

Your browser does not support the video tag.

Graficamos con respecto a X2 y X3

Your browser does not support the video tag.

Ahora puedes volver al índice y seguir explorando el contenido:

<< Índice